﻿using System.Linq;
using System.Web.Mvc;
using Storytelling.Entidades;
using Storytelling.Modelos;
using Storytelling.Negocio;
using Storytelling.Utils;

namespace Storytelling.Controllers
{
    public class UsuarioController : BaseCrudController<Usuario, UsuarioFormModel>
    {
        protected override IServico<Usuario, UsuarioFormModel> Servico
        {
            get { return Servicos.Usuario; }
        }

        [AutorizarAdministrador]
        public override ActionResult Index(FiltrarModel<Usuario> model)
        {
            return base.Index(model);
        }

        [AutorizarAdministrador]
        public override ActionResult Form(long? id)
        {
            return base.Form(id);
        }

        [AutorizarAdministrador]
        public override ActionResult Form(UsuarioFormModel model)
        {
            if (model.Entidade.Login.Equals("Storytelling"))
            {
                return RedirectToAction("Index");  
            }

            return base.Form(model);
        }

        [AutorizarAdministrador]
        public override ActionResult Excluir(long? id)
        {
            return base.Excluir(id);
        }

        public override JsonResult Autocompletar(string nome)
        {
            FiltrarModel<Usuario> model = new FiltrarModel<Usuario>();
            model.Inativados = false;
            model.Exemplo.Nome = nome;
            EscolherCarregamento(model.Carga, TipoCarregamento.Autocompletar);
            Servico.Filtrar(model);
            return Json(model.Colecao.Where(ent => ent.Tipo != Tipo.Jogador).Select(ent => new { ent.Id, ent.Nome }));
        }
    }
}
